コンテナ & gcloud 認証情報
#GoogleCloud
google/cloud-sdk - Docker Image | Docker Hub
まず docker run -ti --name gcloud-config google/cloud-sdk gcloud auth login でログインした認証情報を gloud-config コンテナに保存して、--volumes-from=gcloud-config しつつ別のコンテナを動かす
docker.io/google/cloud-sdk:slim 使うほうが良さそう
VOLUME [/root/.config] している
-v ~/.config/gcloud/:/root/.config/gcloud/ でもよい
CloudSQL へ CloudSQL Proxy を利用してつなぐ
google/cloud-sdk - Docker Image | Docker Hub
$ docker run -it --name gcloud-config google/cloud-sdk:slim gcloud auth login --update-adc
/root/.config/gcloud 以下に認証情報が作られる
--update-adc しないと application default がない(gcloud auth application-default-login でもよい)
root で作られる
GoogleCloudPlatform/cloudsql-proxy: Cloud SQL proxy client and Go library
nonroot ユーザで動作するので --volumes-from=gcloud-config で作ったものを読めない
Docker Compose mounts named volumes as 'root' exclusively · Issue #3270 · docker/compose
$ docker run --rm -it --volumes-from=gcloud-config -p3306:3306 -uroot asia.gcr.io/cloudsql-docker/gce-proxy /cloud_sql_proxy -instances=PROJECT_ID:REGION:INSTANCE=tcp:0.0.0.0:3306
root で起動すれば読んではくれる(あまりやりたくはない)
gcloud の認証をコンテナ外から渡すには、~/.config/gcloud をマウントしてしまうのも手
gcloud-config volumeいらない、このほうが楽か...
$ docker run --rm -it -v ~/.config/gcloud:/home/nonroot/.config/gcloud -p3306:3306 asia.gcr.io/cloudsql-docker/gce-proxy /cloud_sql_proxy ...
~/.config/gcloud/application_default_credentials.json:/home/nonroot/.config/gcloud/application_default_credentials.json でもいい
Google Cloud CLI の Docker イメージのインストール  |  Google Cloud CLI のドキュメント
gcr.io/google.com/cloudsdktool/google-cloud-cli というのもある
asia.gcr.io にもある、今はもう費用変わらないっけ?
entrypoint が gcloud でない